<?php

require_once 'Mobitv/Admin/Action.php';
require_once 'Mobitv/Admin/Functions.php';

//error_reporting(E_ALL & ~E_NOTICE);
class EditAction extends Mobitv_Admin_Action {

    public function execute() {
        $this->checkPermission();
        $this->updateLoginStatus();
        $memberId = $_SESSION['userid'];
        $group_id = isset($_SESSION['groupid']) ? $_SESSION['groupid'] : -1;
        if ($group_id == -1)
            $this->forward401();

        if ($group_id == 1 || $group_id == 4)
            $can_edit_price = true;
        else
            $can_edit_price = false;

        $adminDao = Vega_Dao::factory('Mobitv_Admin_Admin');
        $videoDao = Vega_Dao::factory('Mobitv_Admin_Video');
        $videocatDao = Vega_Dao::factory('Mobitv_Admin_Videocat');

        $videoId = isset($_GET['id']) ? intval($_GET['id']) : 0;
        $video = $videoDao->getDetail($videoId);
        $subCpList = $adminDao->getSubCpList($video['member_id']);

        if (!$videoId || !$video) {
            $this->forward404();
        }

        // CP chỉ được phép sửa video do chính mình upload lên
        if (!$_SESSION['viewall'] && ($video['member_id'] != $_SESSION['userid'])) {
            $this->forward401();
        }

        if (!$_SESSION['viewall']) {
            $goto = '/myvideo';
        } else {
            $goto = '/video';
        }

        $this->_view->assign('video', $video);
        $isInvisibleCat = $videocatDao->isInvisible($video['category_id']);
        if (!$isInvisibleCat)
            $cats = $videocatDao->getList();
        else
            $cats = $videocatDao->getInvisibleList();
        $this->_view->assign('cats', $cats);
        if ($_POST) {
            $data = array(
                'title' => $_POST['title'],
                'title_vn' => stripText($_POST['title']),
                'description' => $_POST['description'],
                'description_vn' => stripText($_POST['description']),
                'tag' => $_POST['tag'],
                'category_id' => $_POST['category_id'],
                'subcp_id' => ($subCpList) ? $_POST['subcp_id'] : 0,
                'price' => isset($_POST['price']) ? $_POST['price'] : '0',
                'download_price' => isset($_POST['download_price']) ? $_POST['download_price'] : '0',
            );
            // get min/max price from db config
            $minPrice = $this->_config['video_min_price'];
            $maxPrice = $this->_config['video_max_price'];
            $minDownloadPrice = $this->_config['download_min_price'];
            $maxDownloadPrice = $this->_config['download_max_price'];
            if ($can_edit_price) {
                $rules = array(
                    'title' => 'required|max_length:255',
                    'description' => 'required|max_length:1000',
                    'tag' => 'required|max_length:255',
                    'price' => 'required|integer|greater_than:' . $minPrice . '|less_than:' . $maxPrice,
                    'download_price' => 'required|integer|greater_than:' . $minDownloadPrice . '|less_than:' . $maxDownloadPrice,
                );
            } else {
                $rules = array(
                    'title' => 'required|max_length:100',
                    'description' => 'required|max_length:1000',
                );
            }

            $this->buildValidator($rules);

            $langError = array(
                'title' => array(
                    'required' => 'Bạn phải nhập vào tiêu đề',
                    'max_length' => 'Tiêu đề không được quá %val% kí tự',
                ),
                'description' => array(
                    'required' => 'Bạn phải nhập vào mô tả',
                    'max_length' => 'Mô tả không được quá %val% kí tự',
                ),
                'tag' => array(
                    'required' => 'Bạn phải nhập vào tag',
                    'max_length' => 'Mô tả không được quá %val% kí tự',
                ),
                'price' => array(
                    'required' => 'Bạn phải nhập vào giá',
                    'integer' => 'Giá phải là số',
                    'greater_than' => 'Một video giá phải lớn hơn %val%',
                    'less_than' => 'Một video giá phải nhỏ hơn %val%',
                ),
                'download_price' => array(
                    'required' => 'Bạn phải nhập vào giá tải',
                    'integer' => 'Giá phải là số',
                    'greater_than' => 'Giá tải video phải lớn hơn %val%',
                    'less_than' => 'Giá tải video phải nhỏ hơn %val%',
                ),
            );

            $this->_validator->setErrorMessages($langError);

            if (!$this->_validator->execute()) {
                $this->_view->assign('error', $this->_validator->getErrorMessages());
                $this->alert('Có lỗi xảy ra!');
            } else {
                if ($videoDao->save($data, $videoId, $can_edit_price)) {
                    $this->updateLogAdmin($_SESSION['userid'], 'video', $videoId, 'edit');
                    if (!empty($_POST['thumbnail'])) {

                        changeClipThumbnail($videoId, $_POST['thumbnail']);
                    }
                    $this->gotoUrl($goto, 'Sửa thành công');
                } else {
                    $this->alert('Lỗi hệ thống');
                }
            }
        } else {
            $_POST = $video;
        }

        $thumbs = getThumbnailList($videoId);
        $this->_view->assign('thumbs', $thumbs);
        $this->_view->assign('subCpList', $subCpList);

        $inforClip = $videoDao->getInforOfClip($videoId);
        $this->_view->assign('inforClip', $inforClip);
    }

}
